package com.oop.jihe.map;

import java.util.*;

public class Tes_map_ergodic6 {
    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("no1","老林");
        map.put("no2","查找后");
        map.put("no3","林佳烁");
        map.put(null,null);
        map.put("no4",null);
        map.put("no5",null);
        map.put(1,"赵薇");

//      第一组：先取出所有的key，再通过key取出对应的value
        Set keySet = map.keySet();
        //(1)增强for
        System.out.println("----第一种方式-----");
        for (Object key : keySet){
            System.out.println(key + "-" + map.get(key));
        }

        //(2)迭代器
        System.out.println("----第二种方式-----");
        Iterator iterator = keySet.iterator();
        while (iterator.hasNext()) {
            Object key1 = iterator.next();
            System.out.println(key1 + "-" + map.get(key1));
        }

//      第二组：把所有的values取出
        Collection values = map.values();
        //这里可以使用所有的Collections使用的遍历方法
        //(1)增强for
        System.out.println("-----第一种方式-----");
        for (Object value : values){
            System.out.println(value);
        }

        //(2)迭代器
        System.out.println("-----第二种方式-----");
        Iterator iterator2 = values.iterator();
        while (iterator2.hasNext()) {
            Object value1 =  iterator2.next();
            System.out.println(value1);
        }

//      第三组：通过EntrySet 来获取 k-v
        Set entrySet = map.entrySet();//EntrySet<Map.Entry<k,v>>
        //(1)增强for
        System.out.println("----第一种方式-----");
        for (Object entry : entrySet){
            //将entry转成Map.Entry
            Map.Entry m = (Map.Entry) entry;
            System.out.println(m.getKey() + "-" + m.getValue());
        }

        //(2)迭代器
        System.out.println("-----第二种方式-----");
        Iterator iterator3 = entrySet.iterator();
        while (iterator3.hasNext()) {
            Object entry1 = iterator3.next();
            //System.out.println(next.getClass());//HashMap$Node -实现->Map.Entry(getKey,getValue)
            //向下转型 Map.Entry
            Map.Entry m = (Map.Entry) entry1;
            System.out.println(m.getKey() + "-" + m.getValue());
        }

    }
}
